package jmine.tec.persist.schema.api;

/**
 * Interface que deve ser implementada por elementos do schema que processam metadados de mapeamento para leitura de parâmetros específicos
 * do jTec e adequar o squema gerado aos padrões necessários.
 * 
 * @author lundberg
 * @param <T> tipo de elemento processado pelo elemento
 */
public interface ProcessingSchemaElement<T> extends SchemaElement {

    /**
     * Processa o dado objeto, extraindo metadados e efetuanto alterações para adequar o elemento do schema às informações contidas nos
     * metadados.
     * 
     * @param metadata metadata
     */
    void process(T metadata);
    
    /**
     * Emite uma mensagem de warning
     * 
     * @param warning a mensagem
     */
    void warn(String warning);
}
